home *** CD-ROM | disk | FTP | other *** search
- 0660103030566
- 1TUTORIAL EN PASCAL2ième partie
- 2page # de 8
- 9[....................................................]
-
- =================DEUXIEMELECONDE====================
-
- à PASCAL
- Ç
- ==============PARSERGEVAILLANCOURT==================
-
-
- Bonjouràtous!!
-
- Jesuisheureuxdevousrevenirenpleineformeaveccette
- deuxièmepartiedel'étudeenPascal.J'espèrequelapremière
- partievousaétéutileetquevospremiersprogrammesontété
- réalisésavecsuccès.Surtoutnevousprivezpasdemelaisserun
- messagesurnotreBBSsivousavezdesdifficultés,ilmefera
- plaisirdevousaidersipossible.Maistrèvedebavardageet
- commençonssansplustarderaveclesvariablestableaux.
-
-
- üVARIABLESTABLEAUXÇ
- ==================
-
- Unevariabletableauestunevariablecontenantplusieurs
- valeurs,chacunedecelle-ciétantindicée(indexée).
-
- Supposonsquenousvoulonsemmagasinerlesnotesd'un
- étudiant.Aveccequenousconnaissonsdelaleçon1,nous
- devrionsécrireleprogrammesuivant:
-
- àPROGRAMÇnoteà(INPUT);äÇ
- (*souvenonsnousquelesmotsenmajuscules/italiques
- sontdesmotsréservésauPascal*)
- àVARÇn1,n2,n3,n4,n5,n6,n7,n8:àINTEGER;Ç
- (*supposonsquel'étudiantestévaluésur8notes*)
- àBEGINÇ
- àREADLNÇ(n1,n2,n3,n4,n5,n6,n7,n8);
- àEND.Ç
-
- (programme8)
-
- Maisceciseraitbeaucoupplussimpleenseservantd'une
- variabletableau:
-
- àPROGRAMÇnote2à(INPUT);Ç
- à VARÇnotes:àARRAYÇ[1..8]àOFINTEGER;Ç
- (*déclarationd'unevariabledetypetableau*)
- i:àINTEGER;Ç(*indicedeboucle*)
- àBEGINä
- àFORÇi:=1àTOÇ8àDOREADLNÇ(notes[i]);
- äEND.Ç
-
- (programme9)
-
- Onremarqueraquel'indicedelaboucleàFORÇdevientaussi
- l'indicedutableau.
-
- Ladéclarationd'unevariabletableaudoittoujourssefaire
- selonlasyntaxesuivante:
-
- äàARRAYä
- Ç|
- äà[ä
- Çl'étenduedutableau(typedel'indice)
- |
- äà]ä
- Ç|
- äàOFä
- Ç|
- typedelavariabletableau
-
- (figure9)
-
- L'indiceindiquela"grandeur"dutableau.Dansnotre
- exemple précédent,letableaupossède8"cases"numérotéesde
- 1à8.Cet indicedoitêtrel'undestypessuivants:
-
- -SCALAIRE(voirplusbas)
- -CARACTERE(àCHARÇ)
- -BOOLEEN(àBOOLEANÇ)
- -INTERVALLE
-
- LetypeINTERVALLEest,enfait,un"sous-type",commedans
- notreexemple,1..8estunintervalledutypeàINTEGER.ÇC'estle
- typeleplusutilisépourl'indiced'untableau.Ladéclaration
- d'untypeàintervallealaformesuivante:
-
- constante
- |
- ..
- |
- constante
-
- (figure10)
-
- Oncomprendraqu'uneintervallederéelsn'estpas
- acceptée puisqu'onpeutavoiruneinfinitédenombresréelsentre
- deuxautres.
-
- Lesconstantespeuventégalementêtredéfiniesdansles
- déclarationsdeconstantes.Exemple:
-
- à PROGRAMÇnote3à(INPUT);Ç
- à CONSTÇmaxnote=8;
- à VARÇnotes:àARRAYÇ[1..maxnote]àOFINTEGER;Ç
- i:àINTEGER;Ç
- à BEGINÇ
- àFORÇi:=1tomaxnoteàDOREADLNÇ(notes[i]);
- à END.Ç
-
- (programme10)
-
- Onpeutaussidéclarerletypedel'indice:
-
- à PROGRAMÇnote4à(INPUT);Ç
- à CONSTÇmaxnote=8;
- ä à TYPEÇrange:1..maxnote;
- ä à VARÇnotes:àARRAYÇ[range]àOFINTEGER;Ç
- i:àINTEGER;Ç
- à BEGINÇ
- àFORÇi:=1àTOÇmaxnoteàDOREADLNÇ(notes[i]);
- à END.Ç
-
- (programme11)
-
- Alors,sidurantlasessionsuivante,lerésultatdechaque
- étudiantestcumulésur7notesaulieude8,laseulechoseque
- l'onauraàeffectuerestdechangerlavaleurdemaxnote.
-
- Quandautableau,ilpeutêtreden'importequeltype.Cela
- devientintéressantsinotrevariable,aulieud'êtreattribuéeà
- unseulétudiant,devaitcontenirlesnotesdetouslesétudiants
- delaclasse.Ainsi,letypedelavariabletableauseraitun
- autretableau.
-
- à PROGRAMÇclasseà(INPUT);Ç
- ä à CONSTÇmaxnote=8;(*lenombredenotesparétudiant*)
- maxetudiant=35;(*lenombred'étudiantspar
- classe*)
- à TYPEÇnoterange:1..maxnote;
- etudrange:1..maxetudiant;
- unetud:àARRAYÇ[noterange]àOFINTEGER;Ç
- class:àARRAYÇ[etudrange]àOFÇunetud;
- à VARÇnotes:classe;(*variabledetypeclasseà
- 2dimensions*)
- i,j:àINTEGER;Ç(*indicedeboucle*)
- à BEGINÇ
- àFORÇi:=1àTOÇmaxetudiantàDOÇ
- àFORÇj:=1àTOÇmaxnoteàDOÇ
- àREADLNÇ(notes[i,j]);
- à END.Ç
-
- (programme12)
-
- Noussommesenprésence,dansnotredernierprogramme,d'un
- tableauàdeuxdimensions.
-
- "àARRAYÇ[type1]àOFARRAYÇ[type2]àOFÇtype3"estla
- mêmechoseque"àARRAYÇ[type1,type2]àOFÇtype3.
-
- OncomprenddoncquedansàREADLNÇ(notes[i,j])le"i"estle
- premierindice(premièredimension)tandisquele"j"estle
- deuxièmeindice(deuxièmedimension).Iln'yapasdelimitesau
- nombresdedimensions(1,2,3,4,etc).Seulementvotrecompilateur
- oulamémoiredisponibledel'ordinateurvouslimitera
- physiquement.Noteztoutefoisqu'ilesttrèsrarequel'ondoive
- seservird'untableaudeplusde3dimensions.
-
-
- ü LESCHAINEDECARACTERESÇ
- ========================
-
- Unechaînedecaractèresn'estautrechosequ'untableaude
- caractères.Exemple:
-
- àARRAYÇ[1..30]àOFCHARÇ
-
- Danscetexemplel'onobtientunechaînede30caractères.
-
- à PROGRAMÇtonnomà(INPUT,OUTPUT);Ç
- à CONSTÇstringlenght=30;
- (*longueurmaximumdelachaînedecaracteres*)
- àTYPEÇstring30à:ARRAYÇ[1..stringlenght]àOFCHAR;Ç
- ä à VARÇnom:string30;
- à BEGINÇ
- ä àWRITELNÇ('Quelesttonnom?');
- àREADLNÇ(nom);
- àWRITELNÇ('Bonjour',nom);
- àEND. Ç
-
- (programme13)
-
- Dansl'ordinateur,uncaractèreoccupeunoctetdemémoire.
- Ainsi,dansl'exempleprécédent,lachaînedecaractèresoccupe
- l'espacede30octets(bytes).Ilestcependantpossiblede
- réduirelamémoireutiliséedemoitiéavecl'instructionàPACK.
- Ç
- Cetteinstructionpermetdecompacteruncaractèreendemi
- octet,cequiépargnebeaucoupdemémoiredansletraitementd'un
- tableaudechaînedecaractères.Pourmieuxcomprendre,lisonsle
- programmesuivantquilitlesnotesdesétudiantsd'uneclasse
- dontlesnomsapparaîssentsuccessivementàl'écran.
-
-
- à PROGRAMÇclasse2à(INPUT,OUTPUT);Ç
- ä à CONSTÇmaxnote=8;
- maxetudiant=35;
- à TYPEÇnoterange:1..maxnote;
- etudrange:1..maxetudiant;
- string30:àPACKEDARRAYÇ[1..30]àOFCHAR;Ç
- unetud:àARRAYÇ[noterange]ofàINTEGER;Ç
- à VARäÇnotes:àARRAYÇ[etudrange]àOFINTEGER;Ç
- (*tableaudenotes*)
- noms:àARRAYÇ[etudrange]àOFÇstring30;
- (*tableaudesnoms*)
- i,j:àINTEGER;Ç
- ä à BEGINÇ
- àFORÇi:=1àTOÇmaxetudiantàDOÇ
- àBEGINä
- WRITEÇ(noms[i]);(*affichelenom*)
- àFORÇj:=1àTOÇmaxnoteàDOÇ
- àREADÇ(notes[i,j]);
- (*litlesnotesdel'étudiant*)
- àWRITELN;Ç(*retournelecurseuràlaligne
- suivante*)
- àEND;Ç(*fori*)
- à END.Ç
-
- à Ç (programme14)
-
-
- ü PACKetUNPACKÇ
- ================
-
- Telquementionnéprécédemment,àPACKÇpermetdecompacterun
- tableau.Passeulementuntableaudecaractèresmaisaussides
- tableauxd'autrestypes.Enfait,untableaunoncompactéréserve
- aumoinsunoctetparvaleur,dépendemmentdutypedutableau.
- S'ils'agitd'untableaudebooléensnoncompacté,ilréserveraun
- octetparvaleuralorsqu'enréalitéseullepremierbitde
- l'octet(ilya8bitsdansunoctet)estsignificatif.Sion
- compactecetableau,onpourraainsimettre8valeursbooléennes
- dansunseuloctet,d'oùéconomiedeprèsde90%delamémoire
- occupée.
-
- àUNPACKÇ,quandàlui,faitlecontrairedeàPACKÇ,c'est-à-
- direqu'avecuntableaucompacté,illerendàsonétatnormal.
-
- Pourcompacteruntableau,ilfautemployerlasyntaxe
- suivante:
-
- à PACKÇ(a,b,c);
-
- où"a"estlavariabletableau;
- "b"estlerésultat(variabletableaucompactée);
- "c" est un entier indiquant l'indice de la première
- composantede"a"intervenantdansl'opération.
-
- Pourdécompacteruntableau,ilfaututiliserlasyntaxe
- suivante:
-
- àUNPACKÇ(c,a,b);
-
- Où"a","b",et"c"ontlamêmesignificationquedansla
- syntaxedeàPACK.
- Ç
-
- üLETYPESCALAIREÇ
- ================
-
- Pardéfinition,letypescalaireestl'ensembledesvaleurs
- ordonnéesquepeutassumerunevariabledecetype.
-
- Parexemple,letypeàINTEGERÇestuntypescalaire,letypeà
- CHARÇl'estégalement.LetypeàREALÇ,lui,nel'estpas.
-
- Leprogrammeurpeutdéfinirsesproprestypesscalaires.
- Chaquenouveautypepossèdeunidentificateuretilestdéfinipar
- unelistedevaleursquepeutprendreunevariabledecetype.
-
- Exemple:àTYPEÇetatcivil = (celibataire, marie,divorce,
- separe,veuf);
-
- Etl'onpeutainsidéclarerunevariabledecetype:
-
- àVARÇalain:etatcivil;
-
- Lavariablealainpourradésormaisprendren'importequelle
- valeurdutypeetatcivil,soitcelibataire,marie,divorce,separe
- ouveuf.
-
- Exemple:alain:=celibataire;
-
- Lesvaleurscontenuesdanslalistedéfinissantuntype
- scalairenesontpasdeschaînesdecaractères.Ilestimpossible
- deleslireoudelesimprimer.Parcontre,cesvaleurspeuvent
- intervenirdansdesexpressionsetpeuventêtrecomparées.
-
- Iln'estpaspossiblequ'unmêmevaleurpuissefigurerdans
- deuxtypesdifférents.
-
- Exemple:àTYPEÇprenoms=(julie,serge,alain,denise);
- tissus=(coton,laine,serge);
-
- Lestypesscalairescréésparleprogrammeurserventà
- rapprocherlelangagedeprogrammationdulangagehumain.
-
- D'icilaprochaine,portezvousbien,etbonneprogrammation!
-